package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @desc CommitTaskReportStandardDataComReqDto
 * @使用场景
 */
@Data
public class CommitTaskReportStandardDataComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 数据值结果
     */
    @NotNull(message = "数据值结果不能为空")
    @ApiModelProperty("数据值结果")
    private Double dataResult;

    /**
     * 冗余单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份 %:%
     */
    @NotNull(message = "冗余单位不能为空")
    @ApiModelProperty("冗余单位")
    private String unit;

    /**
     * 归属内容表主键ID
     */
    @NotNull(message = "被评对象目标周期ID不能为空")
    @ApiModelProperty("被评对象目标周期ID")
    private String entityId;

    /**
     * 来自内容表主键ID
     */
    @ApiModelProperty("周期阶段资料ID")
    private String fromContentEntityId;

    /**
     * 数据类型编码 FROM_LAST_BUDGET:预算较上次变化 FROM_LAST_RATIO_BUDGET:预算较上次增降幅 FUNDS_USE_PROGRESS:资金使用进度 BUDGET_USABLE:预算可用金额 BUDGET_FROZEN:预算冻结金额 CUMULATIVE_BUDGET:累计结算金额 BUDGET_TOTAL:预算总金额 FUNDS_RECEIVED_USABLE:到账可用金额 FUNDS_RECEIVED_FROZEN:到账冻结金额 FUNDS_RECEIVED_TOTAL:到账总金额 ACTUAL_VALUE:实际值 COUNT_ACTUAL_VALUE:计算实际值 CHANGE_FROM_LAST_TARGET:较上次目标变化值 COUNT_CHANGE_FROM_LAST_TARGET:计算较上次目标变化值 FROM_LAST_TARGET_LIFT_RATIO:较上次目标增降幅 COUNT_FROM_LAST_TARGET_LIFT_RATIO:计算较上次目标增降幅 PROGRESS_VALUE:进度值 COUNT_PROGRESS_VALUE:计算进度值 FROM_LAST_PROGRESS_VALUE:进度较上次变化值 COUNT_FROM_LAST_PROGRESS_VALUE:计算进度较上次变化值 PROGRESS_FROM_LAST_RATIO:进度较上次增降幅 COUNT_PROGRESS_FROM_LAST_RATIO:计算进度较上次增降幅 REACH:达成度 COUNT_REACH:计算达成度 FROM_LAST_REACH:达成度较上次变化值 COUNT_FROM_LAST_REACH:计算达成度较上次变化值 ACTUAL_FROM_LAST_TIME_RATIO:达成度较上次增降福 COUNT_FROM_LAST_REACH_RATIO:计算达成度较上次增降福 FUNDS_RECEIVED:到账金额 FUNDS_RECEIVED_FROM_LAST:到账较上次变化值 CUMULATIVE_FUNDS_RECEIVED:累计到账金额 FUNDS_EXPEND:支出资金 FUNDS_EXPEND_FROM_LAST:支出较上次变化值 CUMULATIVE_FUNDS_EXPEND:累计支出资金 BUDGET_AMOUNT:预算余额 FUNDS_RECEIVED_BALANCE:到账余额 SUBJECTIVE_MARK:主观评分 SUBJECTIVE_SCORE:主观得分 OBJECTIVE_SCORE:客观得分 PROCESS_SCORE:过程得分 FROM_LAST_REPORT_SCORE:汇报得分较上次变化值 RESULT_SCORE:结果得分 FROM_LAST_RATIO_REPORT_SCORE:汇报得分较上次增降幅 REAL_TIME_SCORE:实时得分 FROM_LAST_ACTUAL_SCORE:实际得分较上次变化值 GIVE_LIKES:点赞数 FROM_LAST_RATIO_ACTUAL_SCORE:实际得分较上次增降幅 DELAY_SURPLUS_LENGTH:延后或剩余天数 SUB_REPORT_AVG_SCORE:子周期汇报平均分 LAST_REPORT_AVG_SCORE:末级周期汇报平均分 RECENTLY_REPORT_AVG_SCORE:最近周期汇报平均分 PROCESS_REPORT_MID_SCORE:过程汇报中期得分 SUB_PROCESS_REPORT_SCORE:子周期过程汇报得分 MID_PROCESS_REPORT_SCORE:中期过程汇报得分 FATHER_PROCESS_REPORT_SCORE:父周期过程汇报得分 CURRENT_SUBJECTIVE_SCORE:当前主观得分 PROCESS_SUBJECTIVE_SCORE:过程主观得分 LOCAL_LEVEL_SCORE:本级得分 LOWER_LEVEL_SCORE:下级得分 ACTUAL_SCORE:实际得分 ROLE_SUBJECTIVE_SCORE:角色主观得分 SUB_ACTUAL_SCORE:子周期实际得分 MID_ACTUAL_SCORE:中期实际得分 FATHER_ACTUAL_SCORE:父周期实际得分 LOW_KR_ACTUAL_SCORE:下级KR实际得分 SUBJECTIVE_AND_OBJECTIVE_SCORE:主客观得分 BUDGET:预算金额 FUNDS_RECEIVED_FROM_LAST_RATIO:到账较上次增降幅 FATHER_CYCLE_REPORT_SCORE:父周期汇报得分 MID_CYCLE_REPORT_SCORE:中期汇报得分 LOWER_PROCESS_CYCLE_REPORT_SCORE:下级过程周期汇报得分 SUB_CYCLE_REPORT_SCORE:子周期汇报得分 LOWER_WORK_CYCLE_REPORT_SCORE:下级工作周期实际得分 LAST_CYCLE_REPORT_SCORE:末级周期汇报得分 NOT_LAST_PROCESS_CYCLE_REPORT_SCORE:中间周期汇报得分 SOURCE_BUDGET_FUNDS_PROP:来源预算金额占比 TARGET_CYCLE_BUDGET_FUNDS_PROP:目标周期预算金额占比 REPORT_SCORE:汇报得分 PROCESS_REPORT_SCORE:过程汇报得分 REPORT_AVG_SCORE:汇报平均分
     */
    @NotNull(message = "数据类型编码不能为空")
    @ApiModelProperty("数据类型编码")
    private String dataType;

    /**
     * 结果产生类型  MANUAL_INPUT:人工手动输入 SYSTEM_AUTO_COUNT:系统自动计算
     */
    @NotNull(message = "结果产生类型 不能为空")
    @ApiModelProperty("结果产生类型 ")
    private String resultType;

    /**
     * 数据使用场景编码 TARGET_PLAN_CALC_DATA_STATISTICS:目标规划计算数据统计 REPORT_TASK_DATA_STATISTICS:汇报任务数据统计 BUDGET_DATA_STATISTICS:预算数据统计 PMO_DATA_STATISTICS:PMO数据统计
     */
    @NotNull(message = "数据使用场景编码不能为空")
    @ApiModelProperty("数据使用场景编码")
    private String dataUsageSceneCode;

    /**
     * 周期ID
     */
    @NotNull(message = "周期ID不能为空")
    @ApiModelProperty("周期ID")
    private String periodId;

    /**
     * 周期开始时间
     */
    @NotNull(message = "周期开始时间不能为空")
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间
     */
    @NotNull(message = "周期结束时间不能为空")
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;

    /**
     * 周期类型标识
     */
    @NotNull(message = "周期类型标识不能为空")
    @ApiModelProperty("周期类型标识")
    private String cycleTypeCode;

    /**
     * 周期类型实例标识
     */
    @ApiModelProperty("周期类型实例标识")
    private String cycleTypeInstanceCode;

    /**
     * 更新周期ID
     */
    @NotNull(message = "更新周期ID不能为空")
    @ApiModelProperty("更新周期ID")
    private String updateCycleId;

    /**
     * 更新周期开始时间
     */
    @NotNull(message = "更新周期开始时间不能为空")
    @ApiModelProperty("更新周期开始时间")
    private Date updateCycleStartTime;

    /**
     * 更新周期结束时间
     */
    @NotNull(message = "更新周期结束时间不能为空")
    @ApiModelProperty("更新周期结束时间")
    private Date updateCycleEndTime;

    /**
     * 更新周期类型标识
     */
    @NotNull(message = "更新周期类型标识不能为空")
    @ApiModelProperty("更新周期类型标识")
    private String updateCycleTypeCode;

    /**
     * 角色标识
     */
    @NotNull(message = "角色标识不能为空")
    @ApiModelProperty("角色标识")
    private String roleCode;

    /**
     * 评价填报角色类型编码 VALUATOR:评价角色 APPLICANT:填报角色
     */
    @NotNull(message = "评价填报角色类型编码不能为空")
    @ApiModelProperty("评价填报角色类型编码")
    private String roleTypeCode;

    /**
     * 填报评价责任人对象ID
     */
    @NotNull(message = "填报评价责任人对象ID不能为空")
    @ApiModelProperty("填报评价责任人对象ID")
    private String personLiableObjId;

    /**
     * 填报评价责任人身份类型编码 FILL_ROLE:填报角色 EVA_ROLE:评价角色 REPORT_ROLE:11111汇报角色
     */
    @NotNull(message = "填报评价责任人身份类型编码不能为空")
    @ApiModelProperty("填报评价责任人身份类型编码")
    private String personLiableTypeCode;

    /**
     * 数据归属个人身份类型编码
     */
    @ApiModelProperty("数据归属个人身份类型编码")
    private String belongToPersonalIdentityTypeCode;

    /**
     * 数据归属个人ID
     */
    @ApiModelProperty("数据归属个人ID")
    private String belongToPersonalIdentityId;

    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @NotNull(message = "关联目标内容类型编码不能为空")
    @ApiModelProperty("关联目标内容类型编码")
    private String targetCycleContentTypeCode;

    /**
     * 关联目标内容ID
     */
    @NotNull(message = "关联目标内容ID不能为空")
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    /**
     * 扩展字段3
     */
    @ApiModelProperty("内容科目ID")
    private String extendedField3;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @NotNull(message = "主体生命周期不能为空")
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 冗余评价模板ID
     */
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

}
